<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>
BeanShell Console
</title>
</head>
<body bgcolor="#ffffff">
<h1>BeanShell Console diyalogo</h1>
<h3>Pambungad o ano ang BeanShell</h3>
<p>
Ang <a href="http://www.beanshell.org/">BeanShell</a> ay isang interactive na shell ng Java na maaaring magamit upang isagawa ang BeanShell script. Ang mga script na ito ay pinasimpleng porma ng Java na gumamit ng maraming elemento mula sa syntax ng Java, ngunit sa mas panisimpleng scripting format. Lahat ng Java code ay balido ding Beanshell code.
Integrasyon ng BeanShell sa OWASP ZAP ay nagbibigay-daan sa iyo na magsulat ng script gamit ang mga function ng ZAP at data set. Ito ay maaaring maging isang napaka na malakas na tampok para sa pagsusuri ng mga web application.
</p>
<h3>BeanShell Console</h3>
<p>
Ang console ay nagsimula mula sa kasangkapan menu, at naglalaman ng isang split screen na kung saan ay sa itaas na kalahati ng interactive console ng BeanShell at sa ilalim ay kalahati sa isang simpleng text editor. Para sa mga kumplikadong script, ikaw ay hinihikayat na gamitin ang isang editor ng Java.  Ang mga script ay pwedeng ma-load, naligtas at nasuri mula sa editor.
</p>
<p>
Kapag ang BeanShell ay nagsimula sa isang numero ng mga bagay mula sa ZAP ay magagamit para sa paggamit, namely:
<ul>
<li>ang <i>modelo</i> pareho, sa pamamagitan ng mga bagay na ito ay pinangalanan ng <b><i>modelo</i></b></li>
<li>sa <i>SiteTree</i> puno ng kasalukuyang site sa pamamagitan ng ang <b><i>site</i></b> na bagay</li>
<li>isang halimbawa ng <i>HttpSender</i> sa pamamagitan ng ang mga pakay ng <b><i>nagpadala</i></b></li>
</ul>
<p>
Pansinin na ang BeanShell ay maluwag na uri. Samakatuwid, ito ay hindi kinakailangan upang ipahayag ang mga variable bago
	gamitin ang mga ito - dahil ito ang mga script na medyo maikli kaysa regulat na Java. Pero Siyempre, kung gusto mong tukuyin ang uri ng maaari mong.
</p>
<h3>Ang paggamit sa Mapa sa site</h3>
<p>
Magsimula tayo sa isang bagay kapaki-pakinabang at karaniwang: Iterate sa pamamagitan ng lahat ng mga site na noda at suriin para sa pagkakaroon ng isang file na ito. Isang script na ito ay nalikha na isinasagawa ang mga ito, pinili <i>na Load</i> at pumili ng mga file na <i>example.tree.bsh</i>.
</p>
<pre>
import org.apache.commons.httpclient.URI;
import org.parosproxy.paros.network.HttpMessage;
import org.parosproxy.paros.model.*;

Tree () {
	
	find (SiteNode node, String resource) {
		if (node == null) return;
		ref = node.getHistoryReference();
		if ((ref != null) &amp;&amp; (!node.isLeaf())) {
			checkExists(ref, resource);    
		}
		for (i=0;i&lt;node.getChildCount();i++) {   
			try {
				find (node.getChildAt(i), resource);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
	
	checkExists(ref, resource) {
		u = ref.getHttpMessage().getRequestHeader().getURI().toString() + "/" + resource;
		msg = ref.getHttpMessage();
		msg.getRequestHeader().setURI(new URI(u));
		sender.sendAndReceive(msg, true);
		if (msg.getResponseHeader().getStatusCode() == 200) {
			print("Found: "+msg.getRequestHeader().getURI().toString());
		}
	}

	return this;
}
</pre>
<p>
Bago pag-click Evaluate, una mag-browse sa isang site sa pamamagitan ng ZAP dagdagan ang puno:
</p>
<p>
Ngayon i-click ang evaluate para magsagawa ng script na nasa editor. Kung walang mga mali, saka ikaw ay pwedeng mag-umpisa gamit ang object defined na nasa script sa pamamagitan ng issuing sa mga command na ito:
</p>
<pre>
t = Tree();
</pre>
<p>
Ito ay nagtayo ng isang bagong bagay sa puno at nagtatalaga ng isang reference sa <i>t</i>.
</p>
<pre>
t.find(sites.getRoot(), "index.html");
</pre>
<p>
Tawagan ang <i>Maghanap ng</i> paraan sa h, na kung saan ay tumatagal ng isang <i>SiteNode</i> bilang ang unang argument at sanggunian upang mahanap ang bilang ikalawang. Sa kasong ito, ang pamamaraan ay iterate sa pamamagitan ng lahat ng mga nodes sa mga puno, dahil tayo ay nagsimula sa ugat, at makikita ang index.html file.
</p>
<p>
Sa halip na iterating sa pamamagitan ng lahat ng mga nodes, din makakapili tayo upang simulan ang isang partikular na node gamit ang <i>findChild</i> na pamamaraan.
</p>
<p>
Ito ay dapat magbigay sayo ng ilang ideya ng kapangyarihan ng BeanShell sa ZAP. Ngunit lubos na kasakapanin ito, kailangan mong pag-aralang mabuti ang mga panloob na API at mga BeanShell na mga tampok. Ang Beanshell ang naging setup para mabigyan na ganap na access sa lahat ng mga panloob na mga bagay ay mga pamamaraan - maging pribadong isa.
</p>
<h3>Ang Simpleng HTTP na hiling</h3>
<p>
Sa susunod na halimbawa, lumikha kami at magpadala ng direktang HTTP sa interactive console:
</p>
<pre>
TBD
</pre>
<p>
Upang lubos na magamit ang kapangyarihan ng BeanShell, dapat mong pamilyar sa mga internasyonal na ZAP. Ang nagpadala na object ay parehong instance sa paggamit ng Manual Request Editor at nga awtomatiko na gumamit ng proxy na mga setting na nagtakda sa ZAP na configurasyon.
</p>
<pre>
TBD
</pre>
<h3>Mga tip</h3>
<p>
Gamitin ang unset(String) command para ma-unset ang anumang idineklarang mga variable, mga pamamaraan o mga bagay. Ito ay kapaki-pakinabang kung gusto mong palitan ang isang paraan na pagpapahayag sa kasalukuyang namespace. Tandaan na ang utos ay tumatagal ng isang String argumento, hindi isang bagay, kaya sa pag-unset sa bagay na ginagamit natin sa itaas, ito ay dapat: unset(“t”); at hindi unset(t)
</p>
<h2>Ma-access sa pamamagitan ng</h2>
<table>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;</td><td>
<a href="../tlmenu/tools.html">Itaas ang antas ng menu ng Tools</a></td><td>Item na 'BeanShell Console'</td></tr>
</table>

<h2>Tignan din</h2>
<table>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;</td><td>
<a href="../overview.html">Ang UI Overview</a></td><td>para sa kabuoan gumagamit ng interface</td></tr>
<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;</td><td>
<a href="dialogs.html">Mga dialogo</a></td><td>para sa mga detalye ng diyalogo o mga popup </td></tr>
</table>

</body>
</html>
